package com.boat.framework.base.exception;

import java.util.Arrays;
import java.util.List;

/**
 * 错误码解析器
 * 
 * @author 周江
 *
 */
public class ErrorCodeUtils {
	private static List<String> NO_PRINT_STATCK_ERRS = Arrays.asList("A", "P", "B");

	/**
	 * 解析错误类型
	 * @param code
	 * @return
	 */
	public static String parseErrType(String code) {
		return (code != null && code.length() == 6) ? String.valueOf(code.charAt(3)) : "";
	}

	/**
	 * 是否业务异常
	 * 
	 * @param code
	 * @return
	 */
	public static boolean isBizError(String code) {
		return "B".equals(parseErrType(code));
	}

	/**
	 * 是否打印堆栈
	 * 
	 * @param code
	 * @return
	 */
	public static boolean isNoPrintStack(String code) {
		String errType = parseErrType(code);
		return NO_PRINT_STATCK_ERRS.contains(errType);
	}

	/**
	 * 设置不打印堆栈错误类型
	 * @param errTypes
	 */
	public static void setNoPrintStackErrs(List<String> errTypes) {
		NO_PRINT_STATCK_ERRS = errTypes;
	}
}
